home *** CD-ROM | disk | FTP | other *** search
/ Softwarová Záchrana 3 / Softwarova-zachrana-3.bin / Xteq X-Setup / xqdcXSP-Setup-EN.exe / {app} / plugins / XQ NoOpen Files.xpl < prev    next >
Text File  |  2004-05-18  |  6KB  |  220 lines

  1. "FILE"="Xteq Systems X-Setup Plugin 5.0"
  2. "TYPE"="8"
  3. "COUNT"="2"
  4. "UIPATH"="Appearance\Files&Folders\Files Open Warning"
  5. "NAME"="Edit File Open Warnings"
  6. "VERSION"="1.53"
  7. "LANGUAGE"="VBScript"
  8. "TEXT 1"="Change"
  9. "TEXT 2"="Delete"
  10. "OSVERSION"="0001011"
  11. "DESCRIPTION 1"="Every non-associated file type in Windows can be assigned a so called "Open Warning". If a "Open Warning" is set for a file and a user tries to open that file, it will receive a warning that this file should not be open. The warning message can either be the Windows default warning (This file is used by the operating system blah blah blah) or you can choose your own warning."
  12. "DESCRIPTION 2"="Just select the file in question and select "Change" to change the warning that should appear, or "Delete" to remove the warning. If you do not provide any text for the Open Warning, Windows will display a default warning."
  13. "DESCRIPTION 3"="Hint: If the file you want to change does not appear in this list, use the "Add File Open Warning" plug-in."
  14. "AUTHOR"="Xteq Systems"
  15. "CONTACTURL"="http://www.xteq.com"
  16. "COPYRIGHT"="Copyright ⌐ Xteq Systems - All Rights Reserved"
  17. "COMMENT 1"="Bloody complicated plug-in!!!"
  18.  
  19. sP_UnknownFile="HKCR\Unknown\Shell\Open\Command\@"
  20. sText_UnknownFile="You have set a command for unknown files. This means, there is a command in your registry that allows you to open any file even if the file type is unknown. Having this function activated, prevents the file warnings from appearing. Please deactivate the Unknown File command using the plugin and return to this plugin." 
  21.  
  22.  
  23.  
  24. sP="HKLM\Software\Classes\"
  25.  
  26. dim iItems        'contains the total amount of the registry keys
  27. Dim aryItems()    'contains the name of the Registry paths (direct files starting with ".")
  28. Dim aryItemsLoc() 'contains the registry location  (\ShellNew or \ShellNew-)
  29. Dim aryDesc()     'contains the description of the items
  30.  
  31.  
  32. Sub Plugin_Initialize 
  33.  'check for unknown command!
  34.  sUNK_Check=RegReadValue(sP_UnknownFile)
  35.  if len(sUNK_Check)>0 then
  36.     Call MsgWarning(sText_UnknownFile)
  37.     Call Disable   
  38.  else
  39.     if RegPathExists(sP) then
  40.        Call ReadRegistry
  41.     else
  42.        Call Disable
  43.     end if
  44.  end if
  45. End Sub
  46.  
  47.  
  48. Sub ReadRegistry
  49.     iItems=RegEnumPaths(sP) 
  50.  
  51.     dim aryTemp
  52.     ReDim aryTemp(iItems)
  53.     dim aryTemp2
  54.     ReDim aryTemp2(iItems)
  55.  
  56.     l=1
  57.     e=1
  58.  
  59.     sDebug=""
  60.  
  61.     'read all data from the path
  62.     For l=1 to iItems       
  63.         sItem=RegEnumElement(l)    
  64.  
  65.         if left(sItem,1)="." then
  66.            s=HasOpenWarning(sP, sP & sItem)
  67.            
  68.            ''if sItem=".vbs" then DebugMsg("Foundit! at " & l & " s=" & s & " sP=" & sP)
  69.    
  70.            If len(s)>0 then
  71.               sDebug=sDebug & sItem
  72.               aryTemp(e)=sItem
  73.               aryTemp2(e)=s
  74.               e=e+1
  75.            end if                
  76.         end if
  77.     next
  78.     'Call DebugMsg(sDebug)
  79.  
  80.  
  81.  
  82.     'okay, now count how many items we have left (that are not empty)...
  83.     iItems=0
  84.     for l=1 to e-1
  85.         If Len(aryTemp(l))>0 then
  86.            iItems=iItems+1
  87.         end if 
  88.     next 
  89.  
  90.     'redim final arrays with this value
  91.     ReDim aryItems(iItems)
  92.     ReDim aryItemsLoc(iItems)
  93.     ReDim aryDesc(iItems)
  94.  
  95.    
  96.     'copy from temp array to the final ones
  97.     i=1
  98.     for l=1 to e-1
  99.         If Len(aryTemp(l))>0 then
  100.            aryItems(i)=aryTemp(l)
  101.            
  102.            ''if aryItems(i)=".vbs" then DebugMsg("Foundit! at " & i)
  103.  
  104.            aryItemsLoc(i)=aryTemp2(l)
  105.            i=i+1
  106.         end if
  107.     next
  108.  
  109.     'fill third array with the file description
  110.     for l=1 to iItems
  111.         aryDesc(l)=GetFileDescription(aryItems(l))
  112.     next 
  113.  
  114.     'AND NOW update the UI
  115.     for l=1 to iItems
  116.         Call SetUIElement(l,aryDesc(l) & " (" & aryItems(l) & ")") 'set data in X-Setup
  117.         if Right(aryItemsLoc(l),1)<>"-" then 'not disabled
  118.            Call SetUIElementEx(l,true) 'set activated
  119.         else
  120.            Call SetUIElementEx(l,false) 'set not active
  121.         end if
  122.     Next
  123. End Sub
  124.  
  125.  
  126. 'VERSION 1.1
  127. 'returns the readable description for a file TYPE. Input is the
  128. 'raw file type (e.g. ".TXT"). 
  129. Function GetFileDescription(DotType)
  130.   sxd_BasePath="HKLM\Software\Classes\"
  131.  
  132.   sxd_Path=sxd_BasePath & DotType & "\@"
  133.   sxd_Val=RegReadValue(sxd_Path)
  134.  
  135.   if IsEmpty(sxd_Val)=true then
  136.      'extended description not found! return default
  137.      GetFileDescription="<UNKNOWN>"
  138.   else
  139.      'found, now get the "real" description
  140.      sxd_Path=sxd_BasePath & sxd_Val & "\@"
  141.      sxd_Name=RegReadValue(sxd_Path)
  142.      
  143.      if IsEmpty(sxd_Name)=true then
  144.         'argh! 
  145.         GetFileDescription="<UNKNOWN>"
  146.      else
  147.         GetFileDescription=sxd_Name
  148.      end if
  149.   end if
  150.  
  151. End Function
  152.  
  153.  
  154. 'VERSION 1.0
  155. 'returns the reg path to the InfoTip value path or "" if nothing was found. Input is the
  156. 'path to the data type (e.g. "HKCR\.TXT"). 
  157. Function HasOpenWarning(StartPath,Path)
  158.  Dim sCheck,sReturn
  159.  xd_sV_NoOpen="\NoOpen"
  160.  sReturn=""
  161.  
  162.  'first check if this file has a name. If so
  163.  'read the data from that name
  164.  s=RegReadValue(Path & "\@")
  165.  if IsEmpty(s)=false then          
  166.     '<default path>\.XXX File\NoOpen
  167.     sCheck=StartPath & s & xd_sV_NoOpen
  168.     if RegValueExists(sCheck) then
  169.        sReturn=sCheck
  170.     end if
  171.  else
  172.     'okay, seems this file has no name
  173.     sCheck=Path & xd_sV_NoOpen
  174.     if RegValueExists(sCheck) then
  175.        sReturn=sCheck
  176.     end if
  177.  end if
  178.  
  179.  HasOpenWarning=sReturn
  180. End Function
  181.  
  182.  
  183.  
  184.  
  185.  
  186.  
  187. Sub Plugin_Apply(ElementIndex,ElementSubIndex)
  188.  if ElementSubIndex>0 then
  189.  
  190.     if ElementIndex=1 then 'change
  191.        sCurPath=aryItemsLoc(ElementSubIndex)
  192.        s=RegReadValue(sCurPath)         
  193.        s=InputWindow("Please enter the warning that should appear e.g. <Ask the sysop!> or leave empty to display the Windows default warning",s,1) 
  194.        if IsEmpty(s)=false then
  195.           Call RegWriteValue(sCurPath,s,1)
  196.        end if
  197.     end if
  198.  
  199.     if ElementIndex=2 then 'delete
  200.        sCurPath=aryItemsLoc(ElementSubIndex)
  201.        Call RegDeleteValue(sCurPath)
  202.     end if
  203.      
  204.  
  205.     'call the holy Windows API
  206.     Call IndicateSettingChange()
  207.  
  208.     're-read UI
  209.     Call ReadRegistry
  210.  else
  211.     Call MsgWarning("Please select an item in the list.")
  212.  end if
  213.  
  214. End Sub
  215.  
  216.  
  217.  
  218. Sub Plugin_Terminate 
  219. End Sub
  220.